package storage;

import org.wwx.register.model.ServiceInstance;

import java.util.List;

/**
 * 服务存储接口，定义注册中心核心数据操作
 *
 * @date 2025/6/6
 * @author王闻薪
 */
public interface ServiceStorage {
    /**
     * 注册服务实例
     * @param serviceName 服务名称
     * @param instance 服务实例对象
     */
    void registerService(String serviceName, ServiceInstance instance);

    /**
     * 注销服务实例
     * @param serviceName 服务名称
     * @param instanceId 实例唯一标识
     */
    void unregisterService(String serviceName, String instanceId);

    /**
     * 获取指定服务的所有可用实例
     * @param serviceName 服务名称
     * @return 实例列表（可能为空列表）
     */
    List<ServiceInstance> getServiceInstances(String serviceName);

    /**
     * 续约服务实例租约
     * @param serviceName 服务名称
     * @param instanceId 实例唯一标识
     */
    void renewLease(String serviceName, String instanceId);
}